#include "findname.h"

NameResults *find_names_by_card_number(const char *card_number)
{
    FILE *file = fopen(INFO_FILE_PATH, "r");
    if (!file)
    {
        printf("无法打开文件\n");
        return NULL;
    }

    // 初始化结果结构
    NameResults *results = malloc(sizeof(NameResults));
    results->names = malloc(sizeof(char *) * MAX_NAMES);
    results->count = 0;

    char line[MAX_LINE_LENGTH];
    int current_section_start = 0;
    char current_name[MAX_LINE_LENGTH] = "";

    while (fgets(line, sizeof(line), file))
    {
        // 检查分隔符
        if (strstr(line, "-----------------") != NULL)
        {
            current_section_start = ftell(file);
            continue;
        }

        // 查找就诊卡号行
        if (strstr(line, "就诊卡号:") != NULL)
        {
            char current_card[20];
            sscanf(line, "就诊卡号: %s", current_card);

            // 如果找到匹配的卡号
            if (strcmp(current_card, card_number) == 0 && current_name[0] != '\0')
            {
                // 保存找到的姓名
                results->names[results->count] = strdup(current_name);
                results->count++;

                // 检查是否超过最大数量
                if (results->count >= MAX_NAMES)
                {
                    break;
                }
            }

            // 重置姓名
            current_name[0] = '\0';
        }

        // 保存当前section的姓名
        if (strstr(line, "姓名:") != NULL)
        {
            sscanf(line, "姓名: %s", current_name);
        }
    }

    fclose(file);
    return results;
}

// 释放资源的函数
void free_name_results(NameResults *results)
{
    if (results)
    {
        for (int i = 0; i < results->count; i++)
        {
            free(results->names[i]);
        }
        free(results->names);
        free(results);
    }
}

// // 示例使用代码
// int main()
// {
//     const char *card_number = "5170517075";
//     NameResults *results = find_names_by_card_number(card_number);

//     if (results)
//     {
//         if (results->count > 0)
//         {
//             printf("找到 %d 个匹配的用户:\n", results->count);
//             for (int i = 0; i < results->count; i++)
//             {
//                 printf("%d. %s\n", i + 1, results->names[i]);
//             }
//         }
//         else
//         {
//             printf("未找到匹配的用户信息\n");
//         }

//         // 释放内存
//         free_name_results(results);
//     }
//     else
//     {
//         printf("查询失败\n");
//     }

//     return 0;
// }